package Day008_List_Collections_set.Demo03_LinkedList集合;

/*
    双向链表结构 :查询慢,增删快
    LinkedList特有方法:(了解即可)
                    public void addFirst(E e) :将指定元素插入此列表的开头。
                    public void addLast(E e) :将指定元素添加到此列表的结尾。

                    public E getFirst() :返回此列表的第一个元素。
                    public E getLast() :返回此列表的最后一个元素。

                    public E removeFirst() :移除并返回此列表的第一个元素。
                    public E removeLast() :移除并返回此列表的最后一个元素。

                    public E pop() :从此列表所表示的堆栈处弹出一个元素。
                    public void push(E e) :将元素推入此列表所表示的堆栈。
                    public boolean isEmpty() ：如果列表不包含元素，则返回true。
 */

import java.util.LinkedList;

public class Test {
    public static void main(String[] args) {
        //创建对象
        LinkedList<String> list = new LinkedList<>();

        //添加元素
        list.add("王宝强");
        list.add("贾乃亮");
        list.add("陈羽凡");
        System.out.println(list); //[王宝强, 贾乃亮, 陈羽凡]

        //1.addFirst(E e) :将指定元素插入此列表的开头
        list.addFirst("谢霆锋"); //[谢霆锋, 王宝强, 贾乃亮, 陈羽凡]
        System.out.println(list);
        //  addLast(E e) :将指定元素添加到此列表的结尾
        list.addLast("潘粤明");
        System.out.println(list); //[谢霆锋, 王宝强, 贾乃亮, 陈羽凡, 潘粤明]
        //2.getFirst() :返回此列表的第一个元素
        System.out.println(list.getFirst());
        //  getLast() :返回此列表的最后一个元素
        System.out.println(list.getLast());
        //3.removeFirst() :移除并返回此列表的第一个元素
        //  removeLast() :移除并返回此列表的最后一个元素

        //4.pop() :从此列表所表示的堆栈处弹出一个元素(删除第一个元素)
        list.pop(); //调用了removeFirst方法
        System.out.println("弹出的元素"+list.pop()); //王宝强
        System.out.println("弹出后的集合"+list); //[贾乃亮, 陈羽凡, 潘粤明]

        //5.push(E e) :将元素推入此列表所表示的堆栈 (添加到第一个)
        list.push("王宝强"); //调用addFirst方法
        System.out.println("添加后的集合" + list); //[王宝强, 贾乃亮, 陈羽凡, 潘粤明]

        //6.isEmpty() ：如果列表不包含元素，则返回true
        System.out.println(list.isEmpty()); //false

    }
}
